export interface IValueBase {
    update: (val: any) => void;
    getValue: () => any;
    toString: () => string;
    destroy: () => void;
    getOriginDataType: () => string;
}
export interface IValueString extends IValueBase {
    type: 'value';
    dataType: 'string';
    value: string;
    range?: string;
    
}

export interface IValueFormula extends IValueBase {
    type: 'value';
    dataType: 'string'|'number'|'boolean'|'error',
    value: string|boolean|number;
}
export interface IValueNumber extends IValueBase {
    type: 'value';
    dataType: 'number';
    value: number;
}
export interface IValueBoolean extends IValueBase {
    type: 'value';
    dataType: 'boolean';
    value: boolean;
}
export interface IValueEmpty extends IValueBase {
    type: 'empty';
}
export interface IValueError extends IValueBase {
    type: 'ERROR'
}

export type ActualValue = IValueString|IValueNumber|IValueBoolean|IValueEmpty|IValueError;